声明

本文是学习GB-T 30962-2014 识别卡 集成电路卡 大容量卡. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们

1 范围

本标准规定了大容量卡的概念、逻辑结构、传输接口,大容量卡数据库的相关命令、操作、事务管理、

用户访问控制操作,以及大容量卡的识别等。

本标准适用于大容量卡的研究、设计、生产和应用。

2 规范性引用文件

下列文件对于本文件的应用是必不可少的。凡是注日期的引用文件,仅注日期的版本适用于本文

件。凡是不注日期的引用文件,其最新版本(包括所有的修改单)适用于本文件。

GB/T 14916—2006 识别卡 物理特性

GB/T 16649.1—2006 识别卡 带触点的集成电路卡 第1部分:物理特性

GB/T 16649.2—2006 识别卡 带触点的集成电路卡 第2部分:触点的尺寸和位置

GB/T 16649.4—2010 识别卡 集成电路卡
第4部分:用于交换的结构、安全和命令

ISO/IEC 7816-3:2006 识别卡 集成电路卡 第3部分:带触点的卡
电信号和传输协议(Iden- tification cards—Integrated circuit cards—Part
3:Cards with contacts—Electrical interface and trans-

mission protocols)

通用串行总线规范2.0版(Universal Serial Bus Specification 2.0)

注:可以从以下网站获得:http://www.usb.org/developers/docs

芯片间 USB 规范1.0版(Inter-Chip USB Supplement to the USB 2.0
Specification V1.0)

注:可以从以下网站获得:http://www.usb.org/developers/devclass docs

3 术语和定义

下列术语和定义适用于本文件。

3.1

集成电路卡 integrated circuit(s)card

IC

内部封装一个或多个集成电路的识别卡(如GB/T14916 中所定义)。

[GB/T 16649.1—2006,定义3.2]

3.2

大容量卡 high capacity cards

带有大容量存储器的 IC 卡。

注:通常采用数据库的方式管理卡内数据,数据库访问采用授权和认证的方式,并采用安全加密算法进行数据的传

输和存储。

3.3

传输接口 transmission interface

用于大容量卡与接口设备(见3.7)之间传输数据的通讯接口。

GB/T 30962—2014

3.4

通用串行总线 universal serial bus

由 USB 组织制定的数据传输协议。

3.5

芯片间通用串行总线 inter-chip USB

由 USB 组织制定的用于芯片间数据传输的协议。

3.6

触点 contact

保持集成电路和外部接口设备间电流连续性的导电元件。

[GB/T 16649.1—2006,定义3.3]

3.7

interface device

在操作中与卡电连接的终端、通信设备或机器。

3.8

卡操作系统 card operating system

在 IC
卡中存储和运行的、以保护存储在非易失性存储器中的应用数据或程序的机密性和完整性、

控制 IC 卡与外界信息交换为目的的嵌入式软件。

3.9

数据库平台 database platform

用于统一管理大容量卡内数据的数据库程序。

4 缩略语

下列缩略语适用于本文件。

APDU: 应用协议数据单元(Application Protocol Data Units)

API:应用编程接口(Application Programming Interface)

ATR: 复位应答(Answer-to-Reset)

CLA: 类别字节(class byte)

COS: 卡操作系统(Card Operating System)

HCC: 大容量卡(high capacity cards)

ICC:集成电路卡(Integrated Circuit cards)

IC USB: 芯片间通用串行总线(inter-chip USB)

IFD:接口设备(interface device)

INS:指令字节(instruction byte)

Lc:用于编码编号 Nc 的长度字段

Le:用于编码编号 Ne 的长度字段

P1、P2:参数字节

RFU: 保留供将来使用(reserved for future use)

SQL: 结构化查询语言(Structure Query Language)

TLV: 标记-长度-值(Tag-Length-Value)

USB: 通用串行总线(Universal Serial Bus)

GB/T 30962—2014

5 概述

相对于传统的IC 卡,大容量卡一般具有以下特征:

——存储容量较大,通常在1 M 字节以上;

——卡内数据通常由内部数据库引擎提供自主管理;

— 一般可支持高安全性的数据传输和存储;

通常可支持一种或多种传输接口,例如,7816 接口(见第7章)、USB/IC USB
接口(见第8

章)。

6 大容量卡逻辑结构

大容量卡逻辑结构如图1所示。

style="width:8.59375in;height:5.0875in" />

注:虚线框中为大容量卡数据库的逻辑结构。

1 大容量卡逻辑结构

大容量卡的逻辑结构主要包含以下4个部分:

a) 大容量卡硬件接口;

b) 大容量卡驱动程序;

c) 大容量卡的数据库应用;

d) 大容量卡的其他应用。

大容量卡驱动程序包括通讯驱动、存储驱动和其他驱动等,其他驱动一般包含算法加速器、定时

器等。

大容量卡的数据库应用和其他应用均受卡本身的安全机制的保护。此外,大容量卡的数据库应用
通常自身也有安全管理,这种安全管理方式一般采用基于角色的访问控制机制,可以对大容量卡内部资
源的访问进行权限的授予和权限的判定,只有具有相应权限的用户才能访问相应的资源,可以提高卡内

资源的安全性。

大容量卡的数据库应用和其他应用均通过命令请求响应的方式与通信接口进行交互。

GB/T 30962—2014

7 大容量卡7816传输接口

7.1 物理特性

大容量卡7816传输接口的物理特性应符合 GB/T 16649.1—2006 的规定。

7.2 触点的尺寸和位置

大容量卡7816传输接口的触点的尺寸和位置应符合 GB/T 16649.2—2006
的规定。

7.3 电信号和传输协议

大容量卡7816传输接口的电信号和传输协议应符合 ISO/IEC7816-3:2006
的规定。

8 大容量卡 USB、IC USB 传输接口

8.1 物理接口

支持 USB、IC USB 传输协议的大容量卡物理接口如图2所示。

-

USB

GND)

接口

VBUS

D+

C1 C5

VCC GND

RST RFU

CI.K I/(

AUX1 AUX2

C4[ C8

VCC

RST

ISO/IEC

7816-3

CLK

接口

1/0

RFU

GiND)

2 支持 USB、IC USB
传输协议的大容量卡物理接口

支持 USB、IC USB 传输协议的大容量卡的触点分配如表1所规定。

1 支持 USB、IC USB 接口的大容量卡的触点分配

触点

分配

符号

C1

USB总线的电源

VBUS

C2

用于I/O接口的复位信号

RST

C3

用于I/O接口的时钟信号

CLK

C4

用于USB协议的USB D+或用于IC USB协议的IC USB D+

D+

C5

GND

GB/T 30962—2014

1 (续)

触点

分配

符号

C6

保留供将来使用

RFU

C7

用于I/O接口的输入输出信号

I/O

C8

用于USB协议的USB D+或用于IC USB协议的IC USB D-

-

未使用的触点区域应和其他触点区域电隔离。

在应用USB 或 IC USB 接口的情况下,这些触点的信号应不影响ISO/IEC
7816-3:2006 中定义的

触点信号。

8.2 USB、IC USB 接口电特性

支持 USB
接口的大容量卡的电源管理应符合通用串行总线规范2.0版中关于电源管理的规定。

支持 IC USB 接口的大容量卡的电流消耗应满足芯片间USB
规范1.0版中有关电源管理的规定。

支持 IC USB 接口的大容量卡应至少支持下述两种工作电压中的一种:

——B 类:3.0V;

——C 类:1.8V。

支持 IC USB
接口的大容量卡通过电压协商来完成对支持的电压级别的选择。电压级别的协商流

程由接口设备发起。

支持 B 类工作电压的大容量卡电特性见表2。

2 B 类电特性

单位为伏

符号

参数

条件

最小值

最大值

IC VDD

电源电压

2.7

3.3

Vm

输入高电平

Vou≥(Von)

2

IC VDD+0.3

Vn.

输入低电平

Vou≤(Vot)

-0.3

0.8

Von

输出高电平

IoH=-2 mA

IC VDD-0.45

Vo

输出低电平

Iou.=2 mA

0.45

支持 C 类工作电压的大容量卡电特性见表3。

3 C 类电特性

单位为伏

符号

参数

条件

最小值

最大值

IC VDD

_

电源电压

1.62

1.98

Vm

输入高电平

Vou≥(Von)

0.65×IC VDD

IC VDD+ 0.3

Vn.

输入低电平

Vou≤(VoL)

-0.3

0.35×IC VDD

VoH

输出高电平

IoH=-2 mA

IC VDD- 0.45

Vot

输出低电平

Ion.=2 mA

0.45

GB/T 30962—2014

9 大容量卡数据库概述

9.1 大容量卡数据库

9.1.1 大容量卡数据库构成

一个在大容量卡上符合本标准的数据库称为大容量卡数据库。大容量卡数据库的访问命令符合

GB/T 16649.4—2010 中定义的行业间命令的编码规则。

大容量卡数据库的构成如图3所示,其中数据库对象包括表、索引等。

style="width:7.70694in;height:2.44722in" />

3 大容量卡数据库构成

大容量卡应使用数据库平台统一管理大容量存储区的数据。

数据库平台应包括应用(命令)接口、数据管理功能、索引管理功能、模式管理功能和操作系统接

口等。

— 应用(命令)接口

· 向应用模块提供数据访问接口,接收应用模块发出的数据访问请求。

——数据管理功能

·
管理应用数据,统一定义应用数据的存储结构,并根据数据访问请求对应用数据进行添

加、删除、更新或检索等应用数据操作。

——索引管理功能

·
管理索引数据,索引数据用于加速定位应用数据在应用数据集合中的位置,索引数据按照

索引算法进行存储;

·
通过索引算法管理索引数据,并根据数据访问请求对索引数据进行生成、根据数据管理的
操作结果添加、删除或更新等操作,以及根据索引算法查找索引数据获得数据位置信息,

供数据管理使用。

模式管理功能

·
管理配置数据,配置数据包括应用模块下所有应用数据的集合、索引的配置信息以及该应

用模块自身的配置信息;

·
统一定义配置数据的存储结构,并根据数据访问请求对配置数据进行模式操作,模式操作
包括生成配置信息、根据数据管理模块和索引管理模块的操作结果添加、删除或更新配置
信息,并根据数据访问请求获取应用数据集合和索引的配置信息,供数据管理模块和索引

管理模块使用。

——操作系统接口

·
为模式管理、数据管理、索引管理提供操作系统的文件访问接口、内存访问接口,使模式管

理模块访问配置数据,使数据管理模块访问应用数据,使索引管理模块访问索引数据。

GB/T 30962—2014

9.1.2 基于SQL
命令的大容量卡数据库的应用示例

本条给出了大容量卡数据库作为一个分布式 SQL
数据库环境的一部分的应用示例。

如图4所示,应用系统既能够使用SQL 命令与 SQL 数据库(即支持 SQL
命令的数据库)进行交 互,也能够使用SQL
命令与大容量卡数据库进行交互。应用系统通过 IFD/ICC 接口把 SQL 命令传送
到 ICC 的数据库中进行处理,这样,
一个带有数据库的大容量卡就能作为一个分布式 SQL 数据库环境

的一部分来部署和使用。

style="width:6.32014in;height:3.62986in" />

4 基于SQL 命令的大容量卡数据库的应用示例

9.2 大容量卡数据表

大容量卡数据库包含称为表的对象,可以通过唯一的标识符来引用。

表是一个结构化数据对象,在数据库中有一个唯一的名称。表由一些已命名的列和排序的若干行
组成。在理论上讲,行的数目可以是无限的(即只受卡中存储空间的限制),也可以是有限的。图5给出

了表及其主要特征的示例。

style="width:6.16042in;height:4.12083in" />

5 表及其主要特征的示例

表的结构创建后就保持不变,既不能删除现有的列也不能插入新的列。在表上可以执行下列操作:

查询、插入、更新、删除。

9.3 大容量卡数据库系统表

系统表由大容量卡数据库平台管理,包含了管理和存取数据库所必需的信息。

style="width:7.40069in;height:2.57361in" />GB/T 30962—2014

10 大容量卡数据库相关命令

10.1 概述

为了提高大容量卡的通用性,扩展大容量卡的应用领域,建立一种处理大容量卡中数据库的操作体

系是必需的。处理大容量卡数据库的体系流程如下:

a)
访问端根据约定的数据通信协议,将数据库操作请求中每个参数的信息封装为对应的
APDU 操作命令;

b) 访问端向大容量卡下发 APDU
操作命令,大容量卡根据约定的数据通信协议解析 APDU 操
作命令,获取操作数据库的命令信息,并根据命令信息,处理对应的数据库,以及根据约定的数
据通信协议,将处理后的响应数据封装为 APDU 响应返回给访问端;

c) 访问端根据约定的数据通信协议,对接收到的APDU
响应进行解析,获得处理结果。

在执行大容量卡数据库操作命令中,SQL
声明(statement)被映射到大容量卡数据库操作上。

从 SQL 声明到大容量卡数据库操作的映射的原则如图6所示。

注1:数据字段的编码是 LV 的结构。由于数据对象是固定的,因此不需要

TLV 结构。

注2: SQL 关键宁不在数据字段中编码。

注3;如果几个子项能构成组,则组的维数应出现在该组的最前面。

注4: Lp 为自定义的参数长度。

6 SQL 声明到大容量卡数据库操作映射原则

如图6所示,数据库操作请求中每个参数的信息被封装为 APDU 操作命令。

首先,访问端会根据约定的数据通信协议,以及每个参数中每个元素的值,确定对应的
APDU 操作

命令中数据内容属性的信息。

其次,访问端会根据数据内容属性的信息的长度,确定对应的 APDU
操作命令中数据长度属性的

信息。

这种执行大容量卡数据库操作命令 APDU 的应用协议结构如图7所示。

首 标 主 体

CLA

[Lc

7 命令 APDU 结构

SQL 声明与大容量卡数据库操作的 APDU 命令之间的映射关系见表4。

GB/T 30962—2014

4 SQL 声明与APDU 命令之间的映射关系

SQL声明

大容量卡数据库操作命令(APDU)

代码

名称

长度

操作描述

SQL声明

CLA

INS

P1

P2

类别

命令

参数1

参数2

1

1

1

1

命令类别

命令代码

命令参数1(操作标签)

命令参数2

SQL属性

Lc字段

数据字段

长度

数据

变量1

变量=Lc

在命令的数据字段中呈现的字节数

在命令的数据字段中发送的字节串

大容量卡根据约定的数据通信协议,将处理后的响应数据封装为 APDU
响应返回给访问端,具体

步骤如下:

a)
根据约定的数据通信协议,将响应数据中每个参数中每个元素的值组成一个数据包,计算数据
包的长度,根据数据包及其长度,确定 APDU 响应中数据内容属性的信息;

b)
确定一个数据包长度的阈值,将数据包长度与阈值进行比较,当长度大于阈值时,将数据包分
成至少两个数据子包,并根据每个数据子包,数据子包的长度,以及对应的多帧标识,确定对应
的 APDU 响应中数据内容属性的信息;

c) 将所有的数据包返回给访问端。

大容量卡数据库对操作的响应 APDU 结构如图8所示。

[数据字段]

SW1、SW2

8 响应 APDU 结构

响应 APDU 内容说明见表5。

5 响应 APDU 内容

代码

名称

长度

描述

数据字段

数据

变量=Le

在响应的数据字段中收到的数据内容

SW1

状态字节1

1

命令处理状态

SW2

状态字节2

1

命令处理受限字符

一个执行数据库操作、执行事务操作或执行用户访问控制操作的命令可能需要1个或多个APDU

命令才能完成。如果接口设备下传到卡或者卡上传到接口设备的数据通过一个
APDU 命令的交互就

能完成,这种情况属于单帧交易的情况,否则属于多帧交易的情况。以下进行分别说明:

— 接口设备下传到卡的命令 APDU 数据字段结构如图9所示。

CLA INS P1P2

[Lc字段][数据字段]

CLA INS P1Flag

Lc Data(Lc个字节)

9 接口设备下传到卡的命令 APDU 数据字段结构

style="width:3.68679in;height:0.5401in" />class="anchor">GB/T 30962—2014

图 9 中 :

· CLA: 见 ISO/IEC 7816-4 中的定义。

· INS: 为执行数据库操作、执行事务操作或执行访问控制操作。

· P1: 为操作类型。

· P2: 为帧标志字节 Flag,Flag(b0~b7, 其中b0 为最低位,b7
为最高位)的定义为:

a) b7:为1,后面的 Lc 和 Data 有效,需要解析; 为0,后面的 Lc 和 Data
无效,不需要解析;

b) b6~b2:RFU;

c) b1:为1,该帧为首帧,否则为非首帧;

d) b0:为1,该帧为尾帧,否则为非尾帧。

注1:对于接口设备传给卡只有1帧,而返回的响应存在多帧的情况,卡传给接口设备的首帧的
Flag应为0x82,卡
传给接口设备的中间帧的Flag应为0x80,卡传给接口设备的最后一帧的
Flag应为0x81。

注2:对于接口设备传给卡只有1帧,并且返回的响应也只有1帧的情况,Flag无意义。

注3:如果接口设备传给卡的命令需要多个APDU
命令(多帧)才能执行完毕的情况,则应连续将这些 APDU 传送 完成。

· Lc: 说明Data 字段中有效数据的长度,小于或等于255字节。

· Data:有效数据。

— 卡上传到接口设备的响应 APDU
数据字段结构,在无响应数据的情况下,如图10所示。

SW1、SW2

1 0 无响应数据情况下的 APDU 数据字段结构

· SW1、SW2: 状态码。

——卡上传到接口设备的响应 APDU
数据字段结构,在有响应数据的情况下,如图11所示。

Flag(1字节)

Len(2字节)

Data(Len个字节)

SW1、SW2

1 1 有响应数据情况下的 APDU 数据字段结构

图11中:

· Flag(b0~b7, 其中b0 为最低位,b7 为最高位)的定义为:

a) b7:为1,后面的 Len 和 Data 有效,需要解析;

为0,后面的 Len 和 Data 无效,不需要解析;

b) b6~b2:RFU;

c) b1:为1,该帧为首帧,否则为非首帧;

d) b0: 为1,该帧为尾帧,否则为非尾帧。

· Len:Data 字段中有效数据的长度,在多帧情况下(Flag
不等于0x83),首帧最前面2字节为多
帧中所有数据的总长度(这个总长度不包括这两个字节),其余帧2个字节数据总长度为0;在

单帧的情况下(Flag 等 于 0x83),2 字节帧数据总长度为单帧数据总长度。

· Data:有效数据。

· SW1、SW2: 状态码。

——接口设备下传到卡的命令 APDU 中的有效数据包(Data) 格式定义:

· 接口设备接口函数参数以 LV 形式传递到卡,有效数据包格式如图12所示。

GB/T 30962—2014

多帧数据

总长度

第1个参数的

数据长度L1

第1个参数

的数据

第n个参数的

数据长度Ln

第n个参

数的数据

2字节

1字节

L1个字节

1字节

Ln个字节

图12 有效数据包格式(接口设备到卡)

· 当存在多维参数的情况下,参数的数据格式如图13所示。

参数的维数

参数的第1个元

素数据长度S1

参数的第1个

元素的数据

参数的第k个

元素数据长度Sk

参数的第k个

元素的数据

1字节

1字节

S1个字节

1字节

Sk个字节

图13 多维参数情况下参数的数据格式(接口设备到卡)

注1: 当字符串以LV
形式传递到卡时,必须把字符串的结束符‘\0'也一起传递,长度包括字符串结束符‘\0’。

注2: 当任意参数的维数大于1的情况下,参数的数据长度不存在。

3 : 在多帧情况下(Flag 不等于0x83),
第1帧最前面2字节为多帧数据总长度,其余帧则没有这2个字节多帧数

据总长度。

注4: 在单帧的情况下(Flag 等 于 0x83), 不存在2字节帧数据总长度。

卡上传到接口设备的响应 APDU 中的有效数据包(Data)格式定义:

· 卡响应数据以LV
形式传递到接口设备,直接将响应数据传递给应用程序进行处理,有效数据

包格式如图14所示。

第1个参数的数据长度L1

第1个参数的数据

第n个参数的数据长度Ln

第n个参数的数据

1字节

L1个字节

1字节

Ln个字节

图14 有效数据包格式(卡到接口设备)

· 当存在多维参数的情况下,参数的数据格式如图15所示。

参数的维数

参数的第1个元素

数据长度S1

参数的第1个

元素的数据

·

参数的第k个

元素数据长度Sk

参数的第k个

元素的数据

1字节

1字节

S1个字节

. ·

1字节

Sk个字节

图15 多维参数情况下参数的数据格式(卡到接口设备)

单帧,多帧命令机制:

——对于命令-响应对, 一个命令APDU 应紧跟一个响应 APDU (见ISO/IEC
7816-3:2006)。 在接 口部分不允许出现命令-响应对的交叉,即收到响应 APDU
之后才可以初始化另外一对命令-
响应对。而在单帧、多帧机制中,每一发送帧都是一个命令 APDU,
每一应答帧都是一个响应 APDU,
因此向大容量卡中发送一帧数据,都应得到响应才能继续发送下一帧数据,直到所有

的帧数据发送完毕。

——帧命令机制是为了更好地适应大容量卡内部资源有限(尤其是内存资源)而设计的,它可以在

内存有限的情况下有效的运行,并适合大容量卡数据库中大数据量的传输和操作。

10.2 命令分组和编码

大容量卡数据库相关命令可以进行分组,如图16所示。

GB/T 30962—2014

style="width:8.76in;height:3.04656in" />大容量卡数据库相关命令

执行数据库操作 执行事务操作 执行用户访问控制操作

CREATEDB

BEGINTRANSACTION

INSERT ROLE

OPEN DB

COMMIT

DELETE ROLE

CLOSE DB

ROLLBACK

UPDATE ROLE

CREATETABLE

GET OBJECT DBY NAME

CREATE INDEX

GETOBJECT SAFE LEVELBY D

GET RECORD)OPEN

GET OBJECT TYPE BY ID

GET RECORDNEXT

GET OBJECT INF()BY NAME

GET RECORT)CLOSE

[NSERT USER

[NSERT RECORD

DELETE USER

UPDATE RECORD

UPDATE USER

DELETE RECORD

PA GRANT

DEIETE DB

PA REVOKE

PA REVOKEALL.

PA CANACCESS

UA ASSIGN

UA REVOKE

UA GET ROLEIDBY USERID

LOGIN

LOGOUT

LOGINET)

图16 大容量卡数据库相关命令分组

大容量卡命令的命令编码和命令所对应的操作见表6。

6 命令编码和操作

INS

P1的编码和含义

‘78'

执行数据库操作

10'=CREATE DB

‘11'=OPEN DB

‘12'=CLOSE DB

‘13'=CREATE TABLE

‘14'=CREATE INDEX

‘15'=GET RECORD OPEN

‘16'=GET RECORD NEXT

‘17'=GET RECORD CLOSE

‘18'=INSERT RECORD

‘19'=UPDATE RECORD

‘1A'=DELETE RECORD

‘1B'=DELETE DB

GB/T 30962—2014

6 (续)

INS

P1的编码和含义

‘7A’

执行事务操作

80'=BEGIN TRANSACTION

‘81'=COMMIT

‘12'=ROLLBACK

‘7C'

执行用户访问控制操作

‘10'=INSERT ROLE

‘11'=DELETE ROLE

‘12'=UPDATE ROLE

13'=GET OBJECT ID BY NAME

14'=GET OBJECT SAFE LEVEL BY ID

‘15'=GET OBJECT TYPE BY ID

‘16'=GET OBJECT INFO BY NAME

‘17'=INSERT USER

‘18'=DELETE USER

‘19'=UPDATE USER

‘1A'=PA GRANT

1B'=PA

REVOKE

‘1C'=PA

REVOKEALL

1D'=PA

CANACCESS

‘1E'=UA ASSIGN

1F'=UA REVOKE

‘20'=UA GET ROLEID BY USERID

‘21'=LOGIN

‘22'=LOGOUT

‘23'=LOGINED

附录 A 给出了命令的用法和编码示例。

10.3 状态字节

响应的状态字节 SW1、SW2
表示了卡内的处理状态。表7列出了在本标准中通用SW1-SW2 值的

含义。每个命令或执行操作中对应的栏目中有更详细的含义。

7 SW1、SW2 对应的卡内处理状态

SW1,SW2

定义在GB/T 16649

所在的部分

含义

*9000'

‘61xx'

4

4

正常处理

命令成功

命令成功,xx为命令返回的字节数

‘6282'

4

警告处理

表已到达结尾

GB/T 30962—2014

7 (续)

SW1、SW2

定义在GB/T 16649

所在的部分

含义

‘6500'

‘6581'

4

4

执行错误

未知错误

内存错误

‘6700'

4

检查错误

长度错误

6900'

‘6982'

‘6985'

4

4

4

命令不允许

未知错误

不满足安全状态

未执行前置命令或操作

错误参数

‘6A00'

4

没有信息被给出

‘6A80'

4

数据字段中参数错误

6A81'

4

操作不支持

6A84'

4

内存不足

6A88'

4

未发现应用对象

‘6A89'

7

对象已经存在

‘6Cxx'

4

错误的Le长度:SW2表示正确的长度

‘6D00'

4

不支持的命令

10.4 数据库的安全属性

当数据库支持访问控制时,在创建数据库表、索引等文件时,同时创建数据安全属性文件,用于存储

访问控制等相关信息。

10.5 符号和特定译码

在后续的章条中,下面的符号被用来描述SQL 语句:

—— 表示可选的;

- \< … >表示属性字符串; ::=表示由哪些组成;

— 表示或;

— *表示所有的;

—— …表示省略。

对于参数编码,以下符号被使用:

———Ls:多帧数据总长度(用2字节编码);

——
[Ls]:多帧数据总长度(用2字节编码),该参数在有多帧数据时才存在,否则不存在;

——N: 参数的维数为 N;

——Lp: 参数长度(用1字节编码);

—— (Lp): 参数长度固定,不编码;

— \<>:参数是长度为 Lp 的数据。

GB/T 30962—2014

注:如果参数长度为 Lp 且不固定,则在命令APDU 中用1字节编码;如果 Lp
长度固定,则 Lp 在命令 APDU 中不

编码。

11 大容量卡数据库操作

11.1 CREATE DB

11.1.1 定义和范围

创建数据库。

11.1.2 使用条件和安全

有创建数据库权限的用户才能执行该操作。

数据库名称应小于或等于16个字节。

11.1.3 命令报文

数据库操作相关的 SQL 语句:

CREATE DB\<db name>

\<db name>::=\<数据库名称>

执行数据库操作相关的命令 APDU 见表8。

8 CREATE DB 的命令 APDU

命令字段

CLA

INS

P1

flag

Lc

Data

Le

参照GB/T 16649.4定义

‘78’(=执行数据库操作)

10'(=CREATE DB)

‘00',其他值保留供将来使用

Data的长度

Lp<数据库名称>

11.1.4 响应报文

CREATE DB的响应 APDU 见表9。

9 CREATE DB 的响应 APDU

响应字段

Data

SW1、SW2

状态字节

11.1.5 状态情况

可能会出现下列特定出错情况:

——SW1='69',SW2=

GB/T 30962—2014

· '82':安全状态不满足。

——SW1='6A',SW2=

· '80':Data 字段中的参数不正确;

· ‘84':对象已经存在。

SW1、SW2 的其他可能值见附录 B。

11.2 OPEN DB

11.2.1 定义和范围

打开数据库。

11.2.2 使用条件和安全

同时只能有一个数据库被打开处于激活状态。

11.2.3 命令报文

数据库操作相关的 SQL 语句:

OPEN DB\<db name>

\<db name>::=\<数据库名称>

执行数据库操作相关的命令 APDU 见表10。

表10 0 PEN DB 的命令 APDU

命令字段

CLA

INS

P1

flag

Lc

Data

Le

参照GB/T 16649.4定义

78'(=执行数据库操作)

‘11'(=OPEN DB)

00',其他值保留供将来使用

Data的长度

Lp<数据库名称>

11.2.4 响应报文

OPEN DB的响应 APDU 见表11。

表11 0 PEN DB 的响应 APDU

响应字段

Data

SW1、SW2

状态字节

11.2.5 状态情况

可能会出现下列特定出错情况:

——SW1='6A',SW2=

· ‘80':Data 字段中的参数不正确。

GB/T 30962—2014

SW1、SW2 的其他可能值见附录 B。

11.3 CLOSE DB

11.3.1 定义和范围

关闭数据库。

11.3.2 使用条件和安全

无 。

11.3.3 命令报文

数据库操作相关的 SQL 语句:

CLOSE DB

执行数据库操作相关的命令 APDU 见表12。

表12 CLOSE DB 的命令 APDU

命令字段

CLA

INS

P1

flag

Lc

Data

Le

参照GB/T 16649.4定义

78'(=执行数据库操作)

‘12'(=CLOSE DB)

‘00',其他值保留供将来使用

Data的长度

11.3.4 响应报文

CLOSE DB的响应 APDU 见表13。

表13 CLOSE DB 的响应 APDU

响应字段

Data

SW1,SW2

状态字节

11.3.5 状态情况

可能会出现特定出错情况,SW1、SW2 的可能值见附录B。

11.4 CREATE TABLE

11.4.1 定义和范围

创建数据表。

11.4.2 使用条件和安全

使用条件和安全要求如下:

GB/T 30962—2014

a) 有创建表权限的用户才能执行该操作;

b) 数据表名称应小于或等于16个字节;

c) 每个数据字段的长度应小于或等于255字节;

d) 表的字段总数量应小于或等于56个。

11.4.3 命令报文

数据库操作相关的 SQL 语句:

CREATE TABLE\<table name>\<table element list

\<table name>::=\< 表 名 称 >

\<table element list >::=\< 列 定 义 >

执行数据库操作相关的命令 APDU 见表14。

表14 CREATE TABLE 的命令 APDU

命令字段

CLA

INS

P1

flag

Lc

Data

Le

参照GB/T 16649.4定义

78'(=执行数据库操作)

‘13'(=CREATE TABLE)

Flag

Data的长度

[Ls]

Lp<表名>

N

Lp<列定义1>

Lp<列定义N>

11.4.4 响应报文

CREATE

TABLE的响应 APDU 见表15。

表15 CREATE

TABLE 的响应 APDU

响应字段

Data

SW1、SW2

Flag

Ls

<表句柄>

状态字节

11.4.5 状态情况

可能会出现下列特定出错情况:

——SW1='69',SW2=

· '82':安全状态不满足。

——SW1='6A',SW2=

GB/T 30962—2014

· ‘80':参数不正确;

· ‘84':内存不足;

· ‘89':对象已经存在。

SW1、SW2 的其他可能值见附录B。

11.5 CREATE INDEX

11.5.1 定义和范围

创建索引。要求在数据库的初始化过程中,应先创建表和索引,再向表中添加记录。

11.5.2 使用条件和安全

使用条件和安全要求如下:

a)
如果要对数据表的某个字段建立索引,则应在该数据表建立之后,尚未添加任何记录之前建立
索引;否则可能导致索引紊乱;

b) 索引名称应小于或等于16字节;

c) 在同一个数据表中,不能建立同名的索引;

d) 建立索引的字段长度应小于或等于100字节。

11.5.3 命令报文

数据库操作相关的 SQL 语句:

CREATE INDEX\<table name>\<index name>\<index field name>

\<table name>::=\< 表 名 >

\<index name>::=\<索引名称>

\<index field name>::=\<索引域名称>

执行数据库操作相关的命令 APDU 见表16。

1 6 CREATE INDEX APDU

命令字段

CLA

INS

P1

flag

Lc

Data

Le

参照GB/T 16649.4定义

78'(=执行数据库操作)

‘14'(=CREATE INDEX)

‘00',其他值保留供将来使用

Data的长度

Lp<数据表名称>

Lp<索引名称>

Lp<索引域名称>

11.5.4 响应报文

CREATE INDEX 的响应 APDU 见表17。

GB/T 30962—2014

表17 CREATE INDEX 的响应 APDU

响应字段

Data

SW1、SW2

Flag

状态字节

11.5.5 状态情况

可能会出现特定出错情况,SW1、SW2 的可能值见附录B。

11.6 GET RECORD OPEN

11.6.1 定义和范围

在指定的表中设定特定条件的搜索环境。

11.6.2 使用条件和安全

使用条件和安全要求如下:

a) 有查询表的权限的用户才能执行该操作;

b) 如果检索条件为空(NULL 表示检索条件为空),则查询表的全部记录;

c) 如果检索条件不为空,则按照输入的检索条件来进行查询;

d)
返回值不为空,做完查询后不再使用时,应调用11.8中的命令释放查询环境中分配的内存。

11.6.3 命令报文

数据库操作相关的 SQL 语句:

GET RECORD OPEN\<table name>\<search condition>\<search column
definitions

\<table object>::=\< 表 名 称 >

\<search condition>::=\<检索条件>

\<search column definitions>::=\<检索列定义>

执行数据库操作相关的命令 APDU 见表18。

表18 GET RECORD OPEN 的命令 APDU

命令字段

CLA

INS

P1

flag

Lc

Data

参照GB/T 16649.4定义

‘78’(=执行数据库操作)

15'(=GET RECORD OPEN)

‘00',其他值保留供将来使用

Data的长度

[Ls]

Lp<表名称>

N

Lp<检索条件1>

Lp<检索条件N>

N

GB/T 30962—2014

表18 (续)

命令字段

Le

Lp<检索列定义1>

·

Lp<检索列定义N>

11.6.4 响应报文

GET RECORD

OPEN 的响应 APDU 见表19。

表19 GET RECORD OPEN 的响应 APDU

响应字段

Data

SW1、SW2

Flag

Ls

<查询上下文句柄>(注:固定4个字节,字节次序见附录C)

状态字节

11.6.5 状态情况

可能会出现下列特定出错情况:

——SW1='69',SW2=

· '82':安全状态不满足。

——SW1='6A',SW2=

· '80':参数不正确;

· ‘84':内存不足;

· '89':对象已经存在。

SW1、SW2 的其他可能值见附录 B。

11.7 GET RECORD NEXT

11.7.1 定义和范围

获取满足指定检索条件的记录的指定属性字段。

11.7.2 使用条件和安全

有查询表的权限的用户才能执行该操作。

11.7.3 命令报文

数据库操作相关的 SQL 语句:

GET RECORD NEXT\<Context object>

\<Context object>::=\<查询上下文句柄>

注:该句柄由GET RECORD OPEN返回,固定4字节,字节次序见附录C。

执行数据库操作相关的命令 APDU 见表20。

GB/T 30962—2014

表20 GET RECORD NEXT的命令 APDU

命令字段

CLA

INS

P1

flag

Lc

Data

Le

参照GB/T 16649.4定义

78'(=执行数据库操作)

16'(=GET RECORD NEXT)

00',其他值保留供将来使用

Data的长度

(Lp)<查询上下文句柄>

11.7.4 响应报文

GET RECORD

NEXT的响应 APDU 见表21。

表21 GET RECORD NEXT 的响应 APDU

响应字段

Data

SW1、SW2

Flag

Ls

<数据库记录>

状态字节

11.7.5 状态情况

可能会出现特定出错情况,SW1、SW2 的可能值见附录 B。

11.8 GET RECORD CLOSE

11.8.1 定义和范围

关闭句柄,释放相关内存。

11.8.2 使用条件和安全

无 。

11.8.3 命令报文

数据库操作相关的SQL 语句:

GET RECORD CLOSE\<Context object>

\<Context object>::=\<查询上下文句柄>

注:该句柄由 GET RECORD OPEN返回,固定4字节,字节次序见附录 C。

执行数据库操作相关的命令 APDU 见表22。

GB/T 30962—2014

表22 GET RECORD CLOSE 的命令 APDU

命令字段

CLA

INS

P1

flag

Lc

Data

Le

参照GB/T 16649.4定义

78'(=执行数据库操作)

‘17'(=GET RECORD CLOSE)

00',其他值保留供将来使用

Data的长度

(Lp)<查询上下文句柄>

11.8.4 响应报文

GET RECORD

CLOSE 的响应 APDU 见表23。

表23 GET RECORD CLOSE 的响应 APDU

响应字段

Data

SW1、SW2

状态字节

11.8.5 状态情况

可能会出现特定出错情况,SW1、SW2 的可能值见附录B。

11.9 INSERT RECORD

11.9.1 定义和范围

向指定数据库中的指定数据表中插入一条记录。

11.9.2 使用条件和安全

有在当前表中插入记录的权限的用户才能执行该操作。

11.9.3 命令报文

数据库操作相关的SQL 语句:

INSERT RECORD\<table name>\<VALUES

\<table name>::=\< 表 名 称 >

VALUES::= \< 记 录 值 >

执行数据库操作相关的命令 APDU 见表24。

2 4 INSERT RECORD APDU

命令字段

CLA

INS

P1

参照GB/T 16649.4定义

78'(=执行数据库操作)

‘18’(=INSERT RECORD)

GB/T 30962—2014

表24 (续)

命令字段

flag

Lc

Data

Le

‘00',其他值保留供将来使用

Data的长度

[Ls]

Lp<表名>

N

Lp<记录值1>

… ·

Lp<记录值N>

11.9.4 响应报文

INSERT RECORD的响应 APDU 见表25。

表25 INSERT RECORD 的响应 APDU

响应字段

Data

SW1、SW2

状态字节

11.9.5 状态情况

可能会出现下列特定出错情况:

———SW1='69',SW2=

· ‘82':安全状态不满足。

——SW1='6A',SW2=

· ‘80':参数不正确;

· ‘84':内存不足;

· ‘89':对象已经存在。

SW1、SW2 的其他可能值见附录 B。

11.10 UPDATE RECORD

11.10.1 定义和范围

修改符合特定条件的记录为指定值。

11.10.2 使用条件和安全

使用条件和安全要求如下:

a) 有在当前表中更新记录的权限的用户才能执行该操作;

b) 检索条件为空{NULL 表示检索条件为空},则修改表中所有列;

c) 检索条件不为空,则按指定的条件进行修改。

11.10.3 命令报文

数据库操作相关的 SQL 语句:

UPDATE RECORD\<table name>\<query

\<table name>::=\< 表 名 >

\<query condition>::=\<检索条件>

\<new value>::=\<更新记录值>

执行数据库操作相关的命令 APDU 见表26。

表26 UPDATE

GB/T 30962—2014

condition>\<new value>

RECORD 的命令 APDU

命令字段

CLA

INS

P1

flag

Lc

Data

Le

参照GB/T 16649.4定义

78'(=执行数据库操作)

‘19'(=UPDATE RECORD)

‘00',其他值保留供将来使用

Data的长度

[Ls]

Lp<表名>

N

Lp<检索条件1>

Lp<检索条件N>

N

Lp<更新记录值1>

Lp<更新记录值N>

11.10.4 响应报文

UPDATE RECORD 的响应 APDU 见表27。

表27 UPDATE RECORD 的响应 APDU

响应字段

Data

SW1、SW2

状态字节

11.10.5 状态情况

可能会出现下列特定出错情况:

——SW1='69',SW2=

· ‘82':安全状态不满足;

· '85':未执行前置命令或操作。

SW1='6A',SW2=

GB/T 30962—2014

· ‘80':参数不正确;

· ‘84':内存不足;

· ‘89':对象已经存在。

SW1、SW2 的其他可能值见附录B。

11.11 DELETE RECORD

11.11.1 定义和范围

删除符合特定条件的所有记录。

11.11.2 使用条件和安全

使用条件和安全要求如下:

a) 有在当前表中删除记录的权限的用户才能执行该操作;

b) 检索条件为空{NULL 表示检索条件为空),则删除所有记录;

c) 检索条件不为空,则按检索条件进行删除。

11.11.3 命令报文

数据库操作相关的 SQL 语句:

DELETE RECORD\<table name>\<query condition >

\<table name>::=\< 表 名 >

\<query condition>::=\<检索条件>

执行数据库操作相关的命令 APDU 见表28。

表28 DELETE RECORD 的命令 APDU

命令字段

CLA

INS

P1

flag

Lc

Data

Le

参照GB/T 16649.4定义

78'(=执行数据库操作)

‘1A'(=DELETE RECORD)

· 00’,其他值保留供将来使用

Data的长度

[Ls]

Lp<表名>

N

Lp<检索条件1>

·

Lp<检索条件N>

11.11.4 响应报文

DELETE RECORD的响应 APDU 见表29。

GB/T 30962—2014

表29 DELETE RECORD 的响应 APDU

响应字段

Data

SW1、SW2

状态字节

11.11.5 状态情况

可能会出现下列特定出错情况:

——SW1='69',SW2=

· ‘82':安全状态不满足。

——SW1='6A',SW2=

· ‘80':参数不正确;

· ‘85':未执行前置命令或操作。

SW1、SW2 的其他可能值见附录 B。

11.12 DELETE DB

11.12.1 定义和范围

删除数据库。

11.12.2 使用条件和安全

具有删除数据库权限的用户才能删除数据库。

11.12.3 命令报文

数据库操作相关的 SQL 语句:

DELETE DB\<db name>

\<db name>::=\< 数 据 库 名 >

执行数据库操作相关的命令 APDU 见表30。

表30 DELETE DB 的命令 APDU

命令字段

CLA

INS

P1

flag

Lc

Data

Le

参照GB/T 16649.4定义

‘10’(=执行数据库操作)

‘1B'(=DELETE DB)

00',其他值保留供将来使用

Data的长度

Lp<数据库名>

11.12.4 响应报文

DELETE DB 的响应 APDU 见表31。

GB/T 30962—2014

表31 DELETE DB 的响应 APDU

响应字段

Data

SW1、SW2

状态字节

11.12.5 状态情况

可能会出现下列特定出错情况:

——SW1='69',SW2=

· ‘82':安全状态不满足。

——SW1='6A',SW2=

· '80':参数不正确;

· ‘85':未执行前置命令或操作。

SW1、SW2 的其他可能值见附录 B。

12 大容量卡数据库事务管理

12.1 一般概念

大容量卡数据库事务是指作为单个逻辑工作单元执行的一系列操作。事务处理可以确保事务性单

元内的所有操作要么全部成功完成,要么恢复到事务的初始状态。

本标准的事务处理应保证事务的原子性、
一致性、隔离性和持久性。如果执行事务操作命令没有使

用或不支持,则数据库操作引起的修改总是立即提交生效。

由于受大容量卡内资源的限制(尤其是内存资源的限制),大容量卡既不支持多个物理接口的数据
库事务的并发操作,也不支持多个逻辑通道的数据库事务的并发操作,仅支持在基本信道(编号为0)进

行的单事务的处理机制。

12.2 事务操作

12.2.1 BEGIN TRANSACTION

12.2.1.1 定义和范围

开启事务。

12.2.1.2 使用条件和安全

无 。

12.2.1.3 命令报文

数据库操作相关的SQL 语句:

BEGIN TRANSACTION

执行数据库操作相关的命令 APDU 见表32。

GB/T 30962—2014

表32 BEGIN TRANSACTION 的命令 APDU

命令字段

CLA

INS

P1

flag

Lc

Data

Le

参照GB/T 16649.4定义

‘7A’(=执行事务操作)

‘80'(=BEGIN TRANSACTION)

00',其他值保留供将来使用

0

12.2.1.4 响应报文

BEGIN TRANSACTION 的响应 APDU

表33 BEGIN

见表33。

TRANSACTION 的命令 APDU

响应字段

Data

SW1、SW2

状态字节

12.2.1.5 状态情况

可能会出现下列特定出错情况:

———SW1='6A',SW2=

· ‘84':内存不足。

SW1、SW2 的其他可能值见附录B。

12.2.2 COMMIT

12.2.2.1 定义和范围

该事务操作COMMIT 使事务操作 BEGIN 执行以来的所有修改生效。

12.2.2.2 使用条件和安全

事务操作 BEGIN 应先执行。

12.2.2.3 命令报文

数据库操作相关的 SQL 语句:

COMMIT

执行数据库操作相关的命令 APDU 见表34。

GB/T 30962—2014

表34 COMMIT 的命令 APDU

命令字段

CLA

INS

P1

flag

Lc

Data

Le

参照GB/T 16649.4定义

7A’(=执行事务操作)

‘81'(=COMMIT)

00',其他值保留供将来使用

0

12.2.2.4 响应报文

COMMIT 的响应 APDU 见表35。

表35 COMMIT 的响应 APDU

响应字段

Data

SW1、SW2

状态字节

12.2.2.5 状态情况

可能会出现下列特定出错情况:

———SW1='69',SW2=

· '85':未执行前置命令或操作。

SW1、SW2 的其他可能值见附录B。

12.2.3 ROLLBACK

12.2.3.1 定义和范围

该事务操作ROLLBACK 是恢复事务操作BEGIN TRANSACTION 执行以前的状态。

12.2.3.2 使用条件和安全

事务操作BEGIN 应先执行。

12.2.3.3 命令报文

数据库操作相关的SQL 语句:

ROLLBACK

执行数据库操作相关的命令 APDU 见表36。

GB/T 30962—2014

表36 ROLLBACK 的命令APDU

命令字段

CLA

INS

P1

flag

Lc

Data

Le

参照GB/T 16649.4定义

7A’(=执行事务操作)

‘82'(=ROLLBACK)

*00’,其他值保留供将来使用

0

12.2.3.4 响应报文

ROLLBACK 的响应 APDU 见表37。

表37 ROLLBACK 的响应 APDU

响应字段

Data

SW1、SW2

状态字节

12.2.3.5 状态情况

可能会出现下列特定出错情况:

———SW1='69',SW2=

· ‘85':未执行前置命令或操作。

SW1、SW2 的其他可能值见附录B。

13 数据库用户访问控制操作

13.1 一般概念

大容量卡数据库提供基于角色的访问控制(Role Base Access
Control,RBAC),RBAC 是在用户和
访问权限之间引入角色的概念,将用户和角色联系起来,通过对角色的授权来控制用户对系统资源的

访问。

这种基于角色的访问控制由4个部分组成:

a) 用户请求接收功能,接收用户对智能卡资源的访问请求;

b) 角色获取功能,根据访问请求获取用户所对应的角色;

c)
访问权限获取功能,确定用户对应的角色是否具有对智能卡资源的访问权限;

d)
访问控制功能,当角色具有对所述智能卡资源的访问权限时,允许用户对所述智能卡资源进
行访问。

按照用户对大容量卡资源访问的要求,上述四部分的关系如图17所示。

GB/T 30962—2014

style="width:6.42708in;height:5.92014in" />

图17 访问控制权限的基本流程

角色是访问权限的集合,用户通过赋予不同的角色获得角色所拥有的访问权限。
一个用户只能拥 有一个角色, 一个角色可授权给多个用户;
一个角色可包含多个权限, 一个权限可被多个角色包含。用

户通过角色享有权限,它不直接与权限相关联,权限对存取对象的操作许可通过角色实现。

角色一般根据应用系统中完成特定任务的最小权限集进行划分和设定的。

13.2 角色管理

角色的组织方式采用平坦模式,即每个角色都是相互独立的,角色管理(Role
Management)并不管

理角色之间的关系。

由专门的管理角色完成角色元组的插入、更新、删除。在进行实际的添加、修改、删除操作之前,相
应的程序模块需要通过安全核心检查执行该操作的管理角色的权限,仅有被授权的操作才能被相应的
程序模块最终执行。例如,在删除一个角色时,负责删除角色的函数要请求安全核心判断当前管理角色

的行为是否被授权。

一般的,下文中涉及的 roleid
为角色标识符,固定长度为2字节;Rolesafelevel为角色安全等级,固

定长度为1字节;Rolename 为角色名称,最长不超过16字节。

13.2.1 INSERT ROLE

13.2.1.1 定义和范围

插入新的角色信息。

13.2.1.2 使用条件和安全

当前登录的用户为系统管理员或普通管理员;该用户拥有对角色表插入记录的权限。

13.2.1.3 命令报文

数据库操作相关的SQL 语句:

INSERT ROLE\<roleid \<rolesafelevel \<rolename

\<roleid>::= \<角色标识符>

GB/T 30962—2014

注:角色标识符字节次序见附录C。

\<rolesafelevel>::= \<角色安全级别>

\<rolename>::= \< 角 色 名 称 >

执行数据库操作相关的命令 APDU 见表38。

表38 INSERT ROLE 的命令 APDU

命令字段

CLA

INS

P1

flag

Lc

Data

Le

参照GB/T 16649.4定义

7C’(=执行用户访问控制操作)

‘10'(=INSERT ROLE)

‘00',其他值保留供将来使用

Data的长度

(Lp)<角色标识符>

(Lp)<角色安全级别>

Lp<角色名称>

13.2.1.4 响应报文

INSERT ROLE 的响应 APDU 见表39。

表39 INSERT ROLE 的响应 APDU

响应字段

Data

SW1、SW2

状态字节

13.2.1.5 状态情况

可能会出现特定出错情况,SW1、SW2 的可能值见附录 B。

13.2.2 DELETE ROLE

13.2.2.1 定义和范围

从系统中删除与指定角色Id 相关的信息。

13.2.2.2 使用条件和安全

当前登录的用户为系统管理员或普通管理员;该用户拥有对角色表删除记录的权限。

13.2.2.3 命令报文

数据库操作相关的 SQL 语句:

DELETE ROLE \<roleid

\<roleid>::= \<角色标识符>

执行数据库操作相关的命令 APDU 见表40。

GB/T 30962—2014

表40 DELETE ROLE 的命令 APDU

命令字段

CLA

INS

P1

flag

Lc

Data

Le

参照GB/T 16649.4定义

7C'(=执行用户访问控制操作)

‘11'(=DELETE ROLE)

00',其他值保留供将来使用

Data的长度

(Lp)<角色标识符>

13.2.2.4 响应报文

DELETE ROLE 的响应 APDU 见表41。

4 1 DELETE ROLE APDU

响应字段

Data

SW1、SW2

状态字节

13.2.2.5 状态情况

可能会出现特定出错情况,SW1、SW2 的可能值见附录 B。

13.2.3 UPDATE ROLE

13.2.3.1 定义和范围

根据角色标识符,将已有的角色信息更新成新的角色信息。

13.2.3.2 使用条件和安全

当前登录的用户为系统管理员或普通管理员;该用户拥有对角色表更新记录的权限。

13.2.3.3 命令报文

数据库操作相关的SQL 语句:

UPDATE ROLE\<roleid \<rolesafelevel>\<rolename

\<roleid>::= \<角色标识符>

\<rolesafelevel>::= \<角色安全级别>

\<rolename>::= \< 角 色 名 称 >

执行数据库操作相关的命令 APDU 见表42。

GB/T 30962—2014

表42 UPDATE ROLE 的命令 APDU

命令字段

CLA

INS

P1

flag

Lc

Data

Le

参照GB/T 16649.4定义

7C'(=执行用户访问控制操作)

‘12'(=UPDATE ROLE)

‘00',其他值保留供将来使用

Data的长度

(Lp)<角色标识符>

(Lp)<角色安全级别>

Lp<角色名称>

13.2.3.4 响应报文

UPDATE ROLE的响应 APDU 见表43。

表43 UPDATE ROLE 的响应 APDU

响应字段

Data

SW1、SW2

状态字节

13.2.3.5 状态情况

可能会出现特定出错情况,SW1、SW2 的可能值见附录B。

13.3 资源管理

资源就是指数据库系统中需要保护的数据、程序模块及其他对象,通常指数据库,数据表等资源。

一般的,下文中涉及的 fatherObjectId
为父资源标识符,固定长度为2字节;ObjectId 为资源标识

符,固定长度为2字节;ObjectName 为资源名称,最长不超过16字节。

13.3.1 GET OBJECT ID BY NAME

13.3.1.1 定义和范围

通过资源名称和父资源标识符查找资源标识符。

13.3.1.2 使用条件和安全

当前登录的用户为系统管理员或普通管理员;该用户拥有对资源表有查询记录的权限。

13.3.1.3 命令报文

数据库操作相关的SQL 语句:

GET OBJECT ID BY NAME\<fatherObjectId>\<ObjectName>

\<fatherObjectId>::= \<父资源标识符>

注:父资源标识符字节次序见附录C。

GB/T 30962—2014

\<ObjectName>::= \< 资 源 名 称 >

执行数据库操作相关的命令 APDU 见表44。

表44 GET OBJECT ID BY NAME 的命令 APDU

命令字段

CLA

INS

P1

flag

Lc

Data

Le

参照GB/T 16649.4定义

7C'(=执行用户访问控制操作)

13'(=GET OBJECT ID BY NAME)

‘00',其他值保留供将来使用

Data的长度

(Lp)<父资源标识符>

Lp<资源名称>

13.3.1.4 响应报文

GET OBJECT ID BY NAME 的响应 APDU 见表45。

表45 GET OBJECT ID BY NAME 的响应 APDU

响应字段

Data

SW1、SW2

Flag

Ls

<资源标识符>

状态字节

13.3.1.5 状态情况

可能会出现特定出错情况,SW1、SW2 的可能值见附录B。

13.3.2 GET OBJECT SAFE LEVEL BY ID

13.3.2.1 定义和范围

通过资源标识符查找资源安全级别。

13.3.2.2 使用条件和安全

当前登录的用户为系统管理员或普通管理员;该用户拥有对资源表有查询记录的权限。

13.3.2.3 命令报文

数据库操作相关的SQL 语句:

GET OBJECT SAFE LEVEL BY ID\<ObjectId>

\<Objectld>::= \<资源标识符>

注:资源标识符字节次序见附录C。

执行数据库操作相关的命令 APDU 见表46。

GB/T 30962—2014

表46 GET OBJECT SAFE LEVEL BY ID
的命令 APDU

命令字段

CLA

INS

P1

flag

Lc

Data

Le

参照GB/T 16649.4定义

7C'(=执行用户访问控制操作)

‘14'(=GET OBJECT SAFE LEVEL BY ID)

00',其他值保留供将来使用

Data的长度

(Lp)<资源标识符>

13.3.2.4 响应报文

GET OBJECT SAFE LEVEL BY ID 的响应 APDU 见表47。

表47 GET OBJECT SAFE LEVEL BY ID
的响应 APDU

响应字段

Data

SW1、SW2

Flag

Ls

<资源安全级别>

状态字节

13.3.2.5 状态情况

可能会出现特定出错情况,SW1、SW2 的可能值见附录 B。

13.3.3 GET OBJECT TYPE BY ID

13.3.3.1 定义和范围

根据资源标识符获取整个资源类型。

13.3.3.2 使用条件和安全

当前登录的用户为系统管理员或普通管理员;该用户拥有对资源表有查询记录的权限。

13.3.3.3 命令报文

数据库操作相关的SQL 语句:

GET OBJECT TYPE BY ID\<ObjectId>

\<ObjectId>::= \<资源标识符>

执行数据库操作相关的命令 APDU 见表48。

GB/T 30962—2014

表48 GET OBJECT TYPE BY ID 的命令 APDU

命令字段

CLA

INS

P1

flag

Lc

Data

Le

参照GB/T 16649.4定义

7C'(=执行用户访问控制操作)

‘15'(=GET OBJECT TYPE BY ID)

00',其他值保留供将来使用

Data的长度

(Lp)<资源标识符>

13.3.3.4 响应报文

GET OBJECT TYPE BY ID的响应 APDU 见表49。

表49 GET OBJECT TYPE BY ID 的响应 APDU

响应字段

Data

SW1、SW2

Flag

Ls

<资源类型>

状态字节

13.3.3.5 状态情况

可能会出现特定出错情况,SW1、SW2 的可能值见附录 B。

13.3.4 GET OBJECT INFO BY NAME

13.3.4.1 定义和范围

通过资源名称和父资源标识符查找资源标识符。

13.3.4.2 使用条件和安全

当前登录的用户为系统管理员或普通管理员;该用户拥有对资源表有查询记录的权限。

13.3.4.3 命令报文

数据库操作相关的SQL 语句:

GET OBJECT INFO BY NAME\<fatherObjectId>\<ObjectName

\<fatherObjectId>::= \<父资源标识符>

\<ObjectName>::= \<资源名称>

执行数据库操作相关的命令 APDU 见表50。

GB/T 30962—2014

表50 GET OBJECT INFO BY NAME 的命令
APDU

命令字段

CLA

INS

P1

flag

Lc

Data

Le

参照GB/T 16649.4定义

7C'(=执行用户访问控制操作)

16'(=GET OBJECT INFO BY NAME)

‘00',其他值保留供将来使用

Data的长度

(Lp)<父资源标识符>

Lp<资源名称>

13.3.4.4 响应报文

GET OBJECT INFO BY NAME的响应 APDU 见表51。

5 1 GET OBJECT INFO BY NAME
的响应 APDU

响应字段

Data

SW1、SW2

Flag

Ls

(Lp)<资源标识符>

(Lp)<父资源标识符>

(Lp)<资源类型>

(Lp)<资源安全等级>

Lp<资源名称>

状态字节

13.3.4.5 状态情况

可能会出现特定出错情况,SW1、SW2 的可能值见附录 B。

13.4 用户管理

用户信息采用平坦模式存储,即每个用户记录之间是相互独立的,相互之间不存在任何关系,并且

不支持用户组。用户管理模块同时兼管登录子系统的用户信息,将二者合二为一。

一般的,下文中涉及的
userid为用户标识符,固定长度为2字节;usersafelevel 为角色安全等级,固

定长度为1字节;username 为角色名称,最长不超过16字节。

13.4.1 INSERT USER

13.4.1.1 定义和范围

插入新的用户。

13.4.1.2 使用条件和安全

当前登录的用户为系统管理员或普通管理员;该用户拥有对用户表有插入记录的权限。

GB/T 30962—2014

13.4.1.3 命令报文

数据库操作相关的 SQL 语句:

INSERT USER \<userid \<usersafelevel>\<username>

\<userid>::= \<用户标识符>

\<usersafelevel>::= \<用户安全等级>

\<username>::= \< 用 户 名 称 >

执行数据库操作相关的命令 APDU 见表52。

表52 INSERT USER 的命令APDU

命令字段

CLA

INS

P1

flag

Lc

Data

Le

参照GB/T 16649.4定义

7C'(=执行用户访问控制操作)

‘17'(=INSERT USER)

‘00',其他值保留供将来使用

Data的长度

(Lp)<用户标识符>

(Lp)<用户安全等级>

Lp<用户名称>

13.4.1.4 响应报文

INSERT USER 的响应 APDU 见表53。

表53 INSERT USER 的响应 APDU

响应字段

Data

SW1、SW2

状态字节

13.4.1.5 状态情况

可能会出现特定出错情况,SW1、SW2 的可能值见附录 B。

13.4.2 DELETE USER

13.4.2.1 定义和范围

从系统中删除与指定用户 Id 相关的信息。

13.4.2.2 使用条件和安全

当前登录的用户为系统管理员或普通管理员;该用户拥有对用户表有删除记录的权限。

13.4.2.3 命令报文

数据库操作相关的SQL 语句:

DELETE

\<userid>::=

GB/T 30962—2014

USER\<userid>

\<用户标识符>

执行数据库操作相关的命令 APDU 见表54。

表54 DELETE USER 的命令 APDU

命令字段

CLA

INS

P1

flag

Lc

Data

Le

参照GB/T 16649.4定义

7C'(=执行用户访问控制操作)

18'(=DELETE USER)

‘00’,其他值保留供将来使用

Data的长度

(Lp)<用户标识符>

13.4.2.4 响应报文
style="width:0.55334in;height:0.5533in" />

DELETE USER 的响应 APDU 见表55。

表55 DELETE USER 的响应 APDU

响应字段

Data

SW1、SW2

状态字节

13.4.2.5 状态情况

可能会出现特定出错情况,SW1、SW2 的可能值见附录 B。

13.4.3 UPDATE USER

13.4.3.1 定义和范围

根据用户Id,将已有的用户信息更新成新的用户信息。

13.4.3.2 使用条件和安全

当前登录的用户为系统管理员或普通管理员;该用户拥有对用户表有更新记录的权限。

13.4.3.3 命令报文

数据库操作相关的SQL 语句:

UPDATE USER\<userid \<usersafelevel \<username

\<userid>::= \<用户标识符>

\<usersafelevel>::= \<用户安全等级>

\<username>::= \<用户名称>

执行数据库操作相关的命令 APDU 见表56。

GB/T 30962—2014

表56 UPDATE USER 的命令 APDU

命令字段

CLA

INS

P1

flag

Lc

Data

Le

参照GB/T 16649.4定义

7C'(=执行用户访问控制操作)

‘19'(=UPDATE USER)

00',其他值保留供将来使用

Data的长度

(Lp)<用户标识符>

(Lp)<用户安全等级>

Lp<用户名称>

13.4.3.4 响应报文

UPDATE USER 的响应 APDU 见表57。

表57 UPDATE USER 的响应 APDU

响应字段

Data

SW1、SW2

状态字节

13.4.3.5 状态情况

可能会出现特定出错情况,SW1、SW2 的可能值见附录 B。

13.5 角色授权管理

为角色授权(PA)
建立角色、资源及操作之间的关系,指定什么样的角色能够以什么样的操作(访问

动作)访问什么样的资源。只有管理角色才有可能被授权完成这样的工作。

一般的,下文中涉及的 operateid
为操作标识符,固定长度为2字节;fieldname为字段名称,最长不

超过16 字节。

13.5.1 PA GRANT

13.5.1.1 定义和范围

对指定角色 Id 授予对指定资源 Id 进行指定操作 Id 的权限。

13.5.1.2 使用条件和安全

当前登录的用户为系统管理员或普通管理员;该用户拥有对权限表有插入记录的权限。

当指定资源为数据表时,若字段名为空,则是对数据表自身进行操作;若字段名不为空,则是对该数

据表中指定字段进行读授权。

13.5.1.3 命令报文

数据库操作相关的SQL 语句:

GB/T 30962—2014

PA GRANT\<roleid>\<objectid>\<operateid>\<fieldname>

\<roleid>::= \<角色标识符>

\<objectid>::= \<资源标识符>

\<operateid>::= \<操作标识符>

\<fieldname>::= \< 字 段 名 称 >

执行数据库操作相关的命令 APDU 见表58。

表58 PA GRANT的命令 APDU

命令字段

CLA

INS

P1

flag

Lc

Data

Le

参照GB/T 16649.4定义

7C'(=执行用户访问控制操作)

1A'(=PA GRANT)

‘00',其他值保留供将来使用

Data的长度

(Lp)<角色标识符>

(Lp)<资源标识符>

(Lp)<操作标识符>

Lp<字段名称>

13.5.1.4 响应报文

PA GRANT 的响应 APDU 见表59。

表59 PA GRANT的响应 APDU

响应字段

Data

SW1、SW2

状态字节

13.5.1.5 状态情况

可能会出现特定出错情况,SW1、SW2 的可能值见附录 B。

13.5.2 PA REVOKE

13.5.2.1 定义和范围

对指定角色 Id 回收对指定资源 Id 进行指定操作 Id 的权限。

13.5.2.2 使用条件和安全

当前登录的用户为系统管理员或普通管理员;该用户拥有对权限表有更新记录的权限。

当指定资源为数据表时,若字段名为空,则是对数据表自身进行操作;若字段名不为空,则是对该数

据表中指定字段进行回收读权限。

13.5.2.3 命令报文

数据库操作相关的SQL 语句:

GB/T 30962—2014

PA REVOKE\<roleid>\<objectid>\<operateid>\<fieldname>

\<roleid>::= \<角色标识符>

\<objectid>::= \<资源标识符>

\<operateid>::= \<操作标识符>

\<fieldname>::= \<字段名称>

执行数据库操作相关的命令 APDU 见表60。

表60 PA REVOKE 的命令 APDU

命令字段

CLA

INS

P1

flag

Lc

Data

Le

参照GB/T 16649.4定义

7C'(=执行用户访问控制操作)

‘1B'(=PA REVOKE)

‘00',其他值保留供将来使用

Data的长度

(Lp)<角色标识符>

(Lp)<资源标识符>

(Lp)<操作标识符>

Lp<字段名称>

13.5.2.4 响应报文

PA REVOKE的响应 APDU 见表61。

表61 PA REVOKE 的响应 APDU

响应字段

Data

SW1、SW2

状态字节

13.5.2.5 状态情况

可能会出现特定出错情况,SW1、SW2 的可能值见附录B。

13.5.3 PA REVOKEALL

13.5.3.1 定义和范围

回收指定角色的所有权限。

13.5.3.2 使用条件和安全

当前登录的用户为系统管理员或普通管理员;该用户拥有对权限表有删除记录的权限。

13.5.3.3 命令报文

数据库操作相关的 SQL 语句:

PA REVOKEALL\<roleid

GB/T 30962—2014

\<roleid>::= \<角色标识符>

执行数据库操作相关的命令 APDU 见表62。

表62 PA REVOKEALL 的命令 APDU

命令字段

CLA

INS

P1

flag

Lc

Data

Le

参照GB/T 16649.4定义

7C'(=执行用户访问控制操作)

1C'(=PA REVOKE)

‘00',其他值保留供将来使用

Data的长度

(Lp)<角色标识符>

13.5.3.4 响应报文

PA REVOKEALL的响应 APDU 见表63。

表63 PA REVOKEALL 的响应 APDU

响应字段

Data

SW1、SW2

状态字节

13.5.3.5 状态情况

可能会出现特定出错情况,SW1、SW2 的可能值见附录 B。

13.6 用户授权管理

为用户授权(UA)
建立角色和用户之间的关系。只有管理角色才有可能被授权完成这样的工作。

13.6.1 UA ASSIGN

13.6.1.1 定义和范围

为指定的用户 Id 分配指定的角色 Id。

13.6.1.2 使用条件和安全

当前登录的用户为系统管理员或普通管理员;该用户拥有对用户角色绑定表有插入记录的权限。

仅支持一个用户仅可以分配一个角色。

13.6.1.3 命令报文

数据库操作相关的SQL 语句:

UA ASSIGN\<userid>\<roleid

\<userid>::= \<用户标识符>

\<roleid>::= \<角色标识符>

执行数据库操作相关的命令 APDU 见表64。

GB/T 30962—2014

表64 UA ASSIGN 的命令 APDU

命令字段

CLA

INS

P1

flag

Lc

Data

Le

参照GB/T 16649.4定义

7C'(=执行用户访问控制操作)

‘1E'(=UA ASSIGN)

‘00',其他值保留供将来使用

Data的长度

(Lp)<用户标识符>

(Lp)<角色标识符>

13.6.1.4 响应报文

UA ASSIGN 的响应 APDU 见表65。

表65 UA ASSIGN 的响应 APDU

响应字段

Data

SW1、SW2

状态字节

13.6.1.5 状态情况

可能会出现特定出错情况,SW1、SW2 的可能值见附录 B。

13.6.2 UA REVOKE

13.6.2.1 定义和范围

回收指定用户的指定角色。

13.6.2.2 使用条件和安全

当前登录的用户为系统管理员或普通管理员;该用户拥有对用户角色绑定表有删除记录的权限。

13.6.2.3 命令报文

数据库操作相关的SQL 语句:

UA REVOKE\<userid>\<roleid>

\<userid>::= \<用户标识符>

\<roleid>::= \<角色标识符>

执行数据库操作相关的命令 APDU 见表66。

GB/T 30962—2014

表66 UA REVOKE 的命令 APDU

命令字段

CLA

INS

P1

flag

Lc

Data

Le

参照GB/T 16649.4定义

7C'(=执行用户访问控制操作)

‘1F'(=UA REVOKE)

‘00',其他值保留供将来使用

Data的长度

(Lp)<用户标识符>

(Lp)<角色标识符>

13.6.2.4 响应报文

UA REVOKE 的响应 APDU 见表67。

表67 UA REVOKE 的响应 APDU

响应字段

Data

SW1、SW2

状态字节

13.6.2.5 状态情况

可能会出现特定出错情况,SW1、SW2 的可能值见附录 B。

13.6.3 UA GET ROLEID BY USERID

13.6.3.1 定义和范围

根据用户 Id 获取其对应的角色 Id。

13.6.3.2 使用条件和安全

当前登录的用户为系统管理员或普通管理员;该用户拥有对用户角色绑定表有查询记录的权限。

13.6.3.3 命令报文

数据库操作相关的SQL 语句:

UA GET ROLEID BY USERID\<userid>\<roleid>

\<userid>::= \<用户标识符>

\<roleid>::= \<角色标识符>

执行数据库操作相关的命令 APDU 见表68。

表68 UA GET ROLEID BY USERID 的命令
APDU

命令字段

CLA

参照GB/T 16649.4定义

GB/T 30962—2014

表68 (续)

命令字段

INS

P1

flag

Lc

Data

Le

‘7C’(=执行用户访问控制操作)

20'(=UA GET ROLEID BY USERID)

‘00',其他值保留供将来使用

Data的长度

(Lp)<用户标识符>

(Lp)<角色标识符>

13.6.3.4 响应报文

UA GET ROLEID BY USERID的响应 APDU 见表69。

表69 UA GET ROLEID BY USERID 的响应
APDU

响应字段

Data

SW1、SW2

状态字节

13.6.3.5 状态情况

可能会出现特定出错情况,SW1、SW2 的可能值见附录 B。

13.7 会话接口管理

会话管理,即用户登录到系统到退出系统的整个过程的管理。为简化系统的设计与实现,在任一时

刻仅支持一个登录用户。

13.7.1 LOGIN

13.7.1.1 定义和范围

用户登录。

13.7.1.2 使用条件和安全

无 。

13.7.1.3 命令报文

数据库操作相关的SQL 语句:

LOGIN \<userid>\<roleid \<dbname

\<userid>::= \<用户标识符>

\<roleid>::= \<角色标识符>

\<dbname>::= \< 数 据 库 名 >

执行数据库操作相关的命令 APDU 见表70。

GB/T 30962—2014

表70 LOGIN 的命令 APDU

命令字段

CLA

INS

P1

flag

Lc

Data

Le

参照GB/T 16649.4定义

7C'(=执行用户访问控制操作)

‘21'(=LOGIN)

‘00',其他值保留供将来使用

Data的长度

(Lp)<用户标识符>

(Lp)<角色标识符>

Lp<数据库名>

13.7.1.4 响应报文

LOGIN 的响应 APDU 见表71。

表71 LOGIN 的响应 APDU

响应字段

Data

SW1、SW2

状态字节

13.7.1.5 状态情况

可能会出现特定出错情况,SW1、SW2 的可能值见附录 B。

13.7.2 LOGOUT

13.7.2.1 定义和范围

用户注销。

13.7.2.2 使用条件和安全

无 。

13.7.2.3 命令报文

数据库操作相关的 SQL 语句:

LOGOUT

执行数据库操作相关的命令 APDU 见表72。

表72 LOGOUT 的命令 APDU

命令字段

CLA

INS

P1

参照GB/T 16649.4定义

7C'(=执行用户访问控制操作)

'22′(=LOGOUT)

GB/T 30962—2014

表72 (续)

命令字段

flag

Lc

Data

Le

‘00',其他值保留供将来使用

0

13.7.2.4 响应报文

LOGOUT 的命令 APDU 见表73。

表73 LOGOUT 的命令 APDU

响应字段

Data

SW1、SW2

状态字节

13.7.2.5 状态情况

可能会出现特定出错情况,SW1、SW2 的可能值见附录 B。

13.7.3 LOGINED

13.7.3.1 定义和范围

判断指定用户 ID 是否已经登录。

13.7.3.2 使用条件和安全

无 。

13.7.3.3 命令报文

数据库操作相关的SQL 语句:

LOGINED

执行数据库操作相关的命令 APDU 见表74。

表74 LOGINED 的命令 APDU

命令字段

CLA

INS

P1

flag

Lc

Data

Le

参照GB/T 16649.4定义

7C'(=执行用户访问控制操作)

‘23'(=LOGINED)

‘00',其他值保留供将来使用

0

GB/T 30962—2014

13.7.3.4 响应报文

LOGINED 的响应 APDU 见表75。

表75 LOGINED 的响应 APDU

响应字段

Data

SW1、SW2

状态字节

13.7.3.5 状态情况

可能会出现特定出错情况,SW1、SW2 的可能值见附录B。

14 大容量卡的识别

为了避免与普通 IC
的兼容问题,在接口设备启动过程中需要加入一个大容量卡识别机制,要求通
过接口设备读取卡中特定的文件/数据。接口设备通过7816的I/O
接口读取专用文件EFveM 的方式检

测卡类型。

EFMEM:包含了判断 IC 中存储卡类型和使用协议的信息,位置在主文件(MF)
目录下,如图18

所示。

标识:'2FEB

结构:transparent

选项

文件大小:16字节

Update activity:low

访问条件:

更新

失效

禁止

ALW

ADM1

ADM1

ADM1

字节序号

描述

必备/可选

长度

1

RFU

必备

1字节

2~4

接口类型

必备

5字节

5~7

协议版本

必备

3字节

保留

注1: 字节1:bit1
(最低有效位)表示是否有闪存,0:没有闪存,1:有闪存,其余位保留供将来使用。

注2: 字节2~4:高速接口类型,通过ASCⅡI 码表示。例如,"IC USB"
使用编码"7367555342"表示,"USB" 使用编

_

码"2020555342"表示。

注3:
字节5~7:高速接口所使用的协议版本号,通过3个字节16进制数表示。例如,版本1.1应编码成"0001

01",版本2.0应编码成“000200”,版本4.1.1应编码成“040101”,版本10.16.1应编码成"0A
1001"。

图18 EFwEM 示例

GB/T 30962—2014

A

(资料性附录)

大容量卡操作用法示例

本附录提供了大容量卡数据库操作和用户访问控制操作用法和编码实例,组的维数用1字节编码。

操作数据库命令的示例如下所示:

a) CREATE DB DBONE

CH

Lc

Lp

Db

X00101000

x06

x05

DBONE

b) CREATE TABLE TABONE COL1 COL2

CH

Lc

Lp

Tab

N

Lp

Col

Lp

Col

X00101300

X12

x06

TABONE

x02

x04

COL1

x04

COL2

c) INSERT ROLE 21 ROLE1

CH

Lc

Role id

RSAFE

Lp

Role

X00141000

x08

2

1

x05

ROLE1

d) INSERT RECORD命令,插入一条长度为700字节的记录,从主机发送到卡端的
APDU 命令 序列如下所示:

APDU
命令一帧只能传送255字节数据,因此700字节的记录要分为首帧、中间帧、尾帧,3帧

依次连续发送到大容量卡端。

首帧:

CLA

INS

P1

P2

Lc

Data

0x80

0x78

0x18

0x82

255

Ls

lp

tablename

N

lp

data

lp

data

253

6

table

2

lp

data

lp

data

中间帧:

CLA

INS

P1

P2

Lc

Data

0x80

0x78

0x18

0x82

255

Ls

lp

tablename

N

lp

data

lp

data

253

6

table

2

lp

data

lp

data

尾帧:

CLA

INS

P1

P2

Lc

Data

0x80

0x78

0x18

0x81

254

Ls

lp

tablename

N

lp

data

lp

data

252

6

table

2

lp

data

lp

data

注:CH: 命令头(CLA INS P1 P2);Col:列名。

GB/T 30962—2014

B

(规范性附录)

大容量卡数据库可能产生的错误码

大容量卡数据库可能产生的错误码见表 B.1 所列。

style="width:0.52659in;height:0.53328in" /> B.1
大容量卡数据库可能产生的错误码

错误码

说明

0x9000(ACK OK)

成功

0x6F01(EC DBINUSE)

数据库正在使用

0x6F02(EC NAMELGTH)

名称太长

0x6F03(EC BLKSIZE)

块大小错误

0x6F04(EC FILEERROR)

文件错误

0x6F05(EC MEMNOTENOUGH)

内存不足

0x6F06(EC PARAERROR)

参数错误

0x6F07(EC TBLNOTEXIST)

数据表不存在

0x6F08(EC IDXNOTEXIST)

索引不存在

0x6FOB(EC TOOMANYBTI)

B+树索引太多

0x6FOC(EC NOIDXSPECIFIED)

不支持该查找方式

0x6F0D(EC NORECORD)

无记录返回

0x6F0E(EC FLDNOTEXIST)

字段不存在

0x6F0F(EC NOSUPPORT)

不支持此功能

0x6F10(EC BPTFIND)

B+树查找错误

0x6F11(EC BPTDELETE)

B+树删除错误

0x6F12(EC BPTINSERT)

B+树插入错误

0x6F13(EC BPTMODIFY)

B+树更新错误

0x6F14(EC NOKEYEXIST)

关键字不存在

0x6F15(EC NORECEXIST)

该记录不存在

0x6F1B(EC TOOMANYREC)

记录数太多

0x6F1C(EC DBCLOSED)

数据库已关闭

0x6F64(EC STRNOEND)

字符串无终结符

0x6F65(EC INPUTPARAERR)

输入参数错误

0x6F66(EC DBEXIST)

数据库已经存在

0x6F67(EC INVALIDFRAME)

帧无效

0x6F6A(EC FRAMEEND)

帧结束

0x6F6B(EC TRANSACTION)

事务错误

0x6F20(EC INSERTINFOFAIL)

插入信息错误

GB/T 30962—2014

B.1 ( 续 )

错误码

说明

0x6F21(EC INSERTINFOEXIST)

插入信息已存在

0x6F22(EC UPDATEINFOFAIL)

更新信息错误

0x6F23(EC DELETEINFOFAIL)

删除信息错误

0x6F24(EC QUERYINFOFAIL)

查询信息错误

0x6F25(EC NOGRANTED)

未授权

0x6F26(EC NOUSERLOGIN)

无用户登录

0x6F27(EC OBJNOTEXIST)

资源不存在

0x6F28(EC OPNOTEXIST)

操作不存在

0x6F29(EC USERSAFELEVELERR)

用户与资源的安全等级不匹配

0x6F3A(EC ROLESAFELEVELERR)

角色与资源的安全等级不匹配

0x6F3B(EC DELETESELFROLE)

删除角色自身

0x6F3C(EC NOINFO)

无信息

0x6F3D(EC NOALLGRANTED)

未全部授权

0x6F3E(EC HASLOGINED)

用户已登录

0x6F40(EC BLOB FILENAME OVERLAY)

BLOB文件名过长

0x6F41(EC BLOB OPERATION DENIAL)

BLOB操作不允许

0x6F42(EC BLOB BEYOND MAXFILESIZE)

BLOB文件太大

0x6F43(EC BLOB FILE NOTEXIST)

BLOB文件已存在

0x6FA8(EC BLOB TRANSMIT ERR)

BLOB传输错误

0x6F6C(EC TRANSBEGIN)

事务开启错误

0x6F6D(EC TRANSROLLBACK)

事务回滚错误

0x6F6E(EC TRANSCOMMIT)

事务提交错误

GB/T 30962—2014

C

(资料性附录)

网络字节次序和主机字节次序

网络字节次序:在传输数据时,总是数值最高位的字节最先发送。

主机字节次序:跟芯片有关,如 Intel为低位在前,高位在后。

一般来讲,为了程序的通用性,在发出数据时转为网络字节,在接收后转为主机字节来处理。

延伸阅读

更多内容 可以 GB-T 30962-2014 识别卡 集成电路卡 大容量卡. 进一步学习

联系我们

T-CSES 86—2023 集约化生猪养殖污染控制技术指南.pdf